#include <stdint.h>
#include "gd32f30x.h"
#include <stdio.h>

static uint64_t g_sysRunTime = 0;
static void (*SystickHandlerCallBackFunc)(void);

/**
 * @desc  : systick定时器中断函数注册
 * @date  : 2025-03-28
 * @author: AnRui
 * @param : func - {参数说明}:
 * @note  : systick定时器产生中断后 会自动调用该函数
 *		    注意:注册的函数中应该尽量精简 不要有延时函数
 */
void SystickHandlerCallBackFuncReg(void (*func)(void)) {
	SystickHandlerCallBackFunc = func;
}


/**
***********************************************************
* @brief systick初始化
* @param
* @return
***********************************************************
*/
void SystickInit(void) {
	/*1ms 产生一次定时中断*/
	if (SysTick_Config(rcu_clock_freq_get(CK_AHB) / 1000)) {
		while (1);
	}
}


/**
***********************************************************
* @brief 定时中断服务函数，1ms产生一次中断
* @param
* @return
***********************************************************
*/
void SysTick_Handler(void) {
	g_sysRunTime++;
	if(SystickHandlerCallBackFunc != NULL){
		SystickHandlerCallBackFunc();
	}
}


/**
***********************************************************
* @brief 获取系统运行时间
* @param
* @return 以1ms为单位
***********************************************************
*/
uint64_t GetSysRunTime(void) {
	return g_sysRunTime;
}

